﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Entity
{
    public  class WMSKNZYDeliveryNote
    { 
        /// <summary>
      /// 出库单ID（主键，自增）
      /// 唯一标识一条出库记录，用于数据库索引和关联明细
      /// </summary>
        public int delivery_order_id { get; set; }

        /// <summary>
        /// 仓库ID（外键）
        /// 关联仓库表，标识出库操作对应的仓库
        /// </summary>
        public int warehouse_id { get; set; }

        /// <summary>
        /// 编号规则ID（外键）
        /// 关联编号规则表，用于生成出库单号的规则配置
        /// </summary>
        public int rule_id { get; set; }

        /// <summary>
        /// 出库类型ID（外键）
        /// 关联出库类型字典表，如：销售出库、调拨出库、退货出库等
        /// </summary>
        public int type_id { get; set; }

        /// <summary>
        /// 出库单号
        /// 业务系统生成的唯一出库单据编号（如：CK20251104001）
        /// </summary>
        public string outbound_order_no { get; set; }

        /// <summary>
        /// 出库类型名称
        /// 冗余字段，直接存储出库类型的文字描述（如："销售出库"）
        /// </summary>
        public string outbound_type { get; set; }

        /// <summary>
        /// 仓库名称
        /// 冗余字段，存储仓库的文字描述（如："北京仓"）
        /// </summary>
        public string warehouse_name { get; set; }

        /// <summary>
        /// 关联单号
        /// 关联的上游单据编号（如：销售单号、调拨单号）
        /// </summary>
        public string associated_order_no { get; set; }

        /// <summary>
        /// 出库状态
        /// 标识出库单的进度（如："0"=草稿，"1"=待审核，"2"=已审核，"3"=已完成）
        /// </summary>
        public string outbound_status { get; set; }

        /// <summary>
        /// 出库日期
        /// 实际执行出库操作的日期
        /// </summary>
        public DateTime date_of_shipment { get; set; }

        /// <summary>
        /// 客户ID（外键）
        /// 关联客户表，标识出库单对应的客户（如销售出库的买方）
        /// </summary>
        public int customers_id { get; set; }

        /// <summary>
        /// 经办人ID（外键）
        /// 关联用户表，标识办理出库操作的人员
        /// </summary>
        public int handler_id { get; set; }

        /// <summary>
        /// 部门ID（外键）
        /// 关联部门表，标识经办人所属的部门
        /// </summary>
        public int organizations_id { get; set; }

        /// <summary>
        /// 备注信息
        /// 存储出库单的额外说明（如：特殊出库要求、异常情况记录）
        /// </summary>
        public string note { get; set; }

        /// <summary>
        /// 创建人ID（外键）
        /// 关联用户表，标识创建该出库单的人员
        /// </summary>
        public int create_by { get; set; }

        /// <summary>
        /// 创建时间
        /// 出库单的创建时间（自动记录，不可修改）
        /// </summary>
        public DateTime create_time { get; set; }

        /// <summary>
        /// 最后修改人ID（外键）
        /// 关联用户表，标识最后一次修改出库单的人员
        /// </summary>
        public int update_by { get; set; }

        /// <summary>
        /// 最后修改时间
        /// 出库单的最后修改时间（自动更新）
        /// </summary>
        public DateTime update_time { get; set; }

        /// <summary>
        /// 是否删除（逻辑删除标识）
        /// "0"=未删除，"1"=已删除（用于软删除，避免物理删除数据）
        /// </summary>
        public string is_delete { get; set; }

        /// <summary>审核意见</summary>
        public string audit_opinion { get; set; }
    }

    /// <summary>
    /// 仓库表部分属性
    /// </summary>
    public class WarehouseDetailDTO2
    {
        public int warehouse_id { get; set; } // 仓库ID
        public string warehouse_number { get; set; } // 仓库编号
        public string warehouse_name { get; set; } // 仓库名称
    }
    /// <summary>
    /// 库位表部分属性
    /// </summary>
   public class StorageLocationEntity2
   {
        public int location_id { get; set; }
        public int warehouse_id { get; set; }

        public string location_number { get; set; }
        public string location_name { get; set; }
   }
    /// <summary>
    /// 库存表部分属性
    /// </summary>
    public class InventoryEntity2
    {
        public int inventory_id { get; set; }
        public int warehouse_id { get; set; }

        [MaxLength(50)]
        public string warehouse_code { get; set; }

        [MaxLength(100)]
        public string location { get; set; }

        [MaxLength(50)]
        public string product_code { get; set; } 

        public int current_inventory { get; set; } // 当前库存
    }



    public class OutboundOrderRequest
    {
        public WMSKNZYDeliveryNote Order { get; set; }  //出库表主表数据

        public List<WMSKNZYOutboundDetails> Details { get; set; }  //出库从表数据


    }



    public class OutboundOrderDTO
    {
        /// <summary>
        /// 出库单ID
        /// </summary>
        public int delivery_order_id { get; set; }

        /// <summary>
        /// 出库单号
        /// </summary>
        public string outbound_order_no { get; set; }

        /// <summary>
        /// 出库类型（关联字典表StockoutType的DictLabel，如“销售出库”）
        /// </summary>
        public string dictLabel { get; set; }

        /// <summary>
        /// 单据状态（字典值，如“草稿”“待审核”等）
        /// </summary>
        public string outbound_status { get; set; }

        /// <summary>
        /// 出库日期
        /// </summary>
        public DateTime date_of_shipment { get; set; }

        /// <summary>
        /// 仓库名称
        /// </summary>
        public string warehouse_name { get; set; }

        /// <summary>
        /// 关联单号（如销售单号）
        /// </summary>
        public string associated_order_no { get; set; }

        /// <summary>
        /// 客户名称
        /// </summary>
        public string customer_name { get; set; }

        /// <summary>
        /// 客户联系人
        /// </summary>
        public string contact_person { get; set; }

        /// <summary>
        /// 客户联系方式
        /// </summary>
        public string contact_phone_number { get; set; }

        /// <summary>
        /// 出库货品（多个货品以逗号拼接）
        /// </summary>
        public string product_name { get; set; }

        /// <summary>
        /// 出库数量合计
        /// </summary>
        public decimal curr_stk_out_num { get; set; }

        /// <summary>
        /// 出库金额合计
        /// </summary>
        public decimal saleamount { get; set; }

        /// <summary>
        /// 经办人姓名
        /// </summary>
        public string handler_user_name { get; set; }

        /// <summary>
        /// 制单人姓名
        /// </summary>
        public string creator_user_name { get; set; }

        /// <summary>
        /// 制单人所在部门
        /// </summary>
        public string organization_name { get; set; }

        /// <summary>
        /// 制单时间
        /// </summary>
        public DateTime create_time { get; set; }

        /// <summary>
        /// 审核人姓名
        /// </summary>
        public string approver_user_name { get; set; }

        /// <summary>
        /// 审核时间
        /// </summary>
        public DateTime update_time { get; set; }
    }



    public class OutboundAuditDTO
    {
        /// <summary>出库单号列表</summary>
        public List<string> ordernos { get; set; }
        /// <summary>审核结果（通过/驳回）</summary>
        public string audit_result { get; set; }
        /// <summary>审核意见</summary>
        public string audit_opinion { get; set; }
        /// <summary>
        /// 审核人
        /// </summary>
        public string reviewer{get;set;}

    }



}
